package tools

import (
	"fmt"
	"regexp"
	"strings"
	"time"
)

// InStringArray 判断字符串是否是urlitems出现过
func InStringArray(url string, urlItems []string) bool {
	for _, item := range urlItems {
		if strings.Contains(url, item) {
			return true
		}
	}

	return false
}

// MaskPhoneNumber 加密手机号中间4位
func MaskPhoneNumber(phoneNumber string) string {
	re := regexp.MustCompile(`(\d{3})\d{4}(\d{4})`)
	maskedNumber := re.ReplaceAllString(phoneNumber, "$1****$2")

	return maskedNumber
}

// GenerateDateNumber 生成订单号 此方如果1毫秒出现1000次不能使用 查库兜底或者用雪花算法代替
func GenerateDateNumber() string {
	// 获取当前日期和时间
	now := time.Now()
	date := now.Format("20060102")
	hour := now.Hour()
	minute := now.Minute()
	second := now.Second()
	//millisecond := now.Nanosecond() / 1e6 // 获取毫秒
	nanosecond := now.Nanosecond() // 获取纳秒
	// 获取毫秒
	orderNumber := fmt.Sprintf("%s%02d%02d%02d%03d",
		date,
		hour,
		minute,
		second,
		nanosecond,
	)

	// 截取前20位
	if len(orderNumber) > 20 {
		orderNumber = orderNumber[:20]
	}

	return orderNumber
}
